package cn.darkhorse.api;

import lombok.Data;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import lombok.experimental.Accessors;

/**
 * 代表一个业务任务对象
 * @author yuanjun
 * @since 2020/5/28 10:11
 */
@Accessors(chain = true)
@Data
@RequiredArgsConstructor(staticName = "of")
public class BusinessTaskDTO {
    public static final int SPLIT_LENGTH = 2;
    /**
     * 对应业务表单标识
     */
    private String businessKey;

    /**
     * 运行时任务id，对应工作流引擎中的act_ru_task表中的id
     * 如果需要抢占签收任务等操作，需要回传此id
     */
    @NonNull
    private String taskId;

    /**
     * 在hm-hpmn中对应bpmn_task表中的taskKey，在流程引擎中叫做taskDefinitionKey
     */
    private String taskKey;

    /**
     * 流程实例Id
     */
    private String processInstanceId;

    /**
     * 对应的业务类型
     */
    private String byssinessType;

    /**
     * 对也的业务表单id
     */
    private String bussinessId;


    public BusinessTaskDTO setBusinessKey(String businessKey) {
        this.businessKey = businessKey;
        String[] split = businessKey.split(":");
        if (split.length == SPLIT_LENGTH) {
            this.bussinessId = split[1];
            this.byssinessType = split[0];
        }
        return this;
    }
}
